// 云对象教程: https://uniapp.dcloud.net.cn/uniCloud/cloud-obj
// jsdoc语法提示教程：https://ask.dcloud.net.cn/docs/#//ask.dcloud.net.cn/article/129
const db = uniCloud.databaseForJQL()

function getUserByName(name) {
	return db.collection("user").where({
		"userName": name
	}).get()
}
module.exports = {
	_before: function() { // 通用预处理器
		db.setUser({
			role: ["admin"]
		})
	},
  //添加用户
 async addUser(user){
    const {data:res} = await db.collection("user").where({"userName":user.userName}).get()
    //数据库中不存在用户的信息
    if(res.toString()===''){
      const address = []
      await db.collection("user").add({
        "userName":user.userName,
        "img":user.img,
        "addressInfo":address
      })
      const{data:r} = await db.collection("user").where({"userName":user.userName}).get()
      return r[0]
    }
    return res[0]
    // return db.collection("user").
  },
  //根据用户ID获取用户的信息
  async getUserById(id){
    return await db.collection("user").where({
      "_id":id
    }).get()
  },
  
  //根据ID更新用户的手机号和生日
 async updataUserPhoneAndBirthDay(val){
    return await db.collection("user").where({"_id":val.id}).update({
      "userBirthday": val.birthday,
      "userNum": val.phone
    })
  },
  
  //删除地址 id为自己的id，userID为收货人的ID
  async deleteAddress(id,userId){
     const {data:res} = await db.collection("user").where({"_id":id}).get()
     for (var i = 0; i < res[0].addressInfo.length; i++) {
       if(res[0].addressInfo[i].id === userId){
         res[0].addressInfo.splice(i,1)
       }
     }
     return await db.collection("user").where({"_id":id}).update({
       "addressInfo":res[0].addressInfo
     })
  },
  //修改用户的地址信息
  async updateUserAddressInfo(id,item){
     const {data:res} = await db.collection("user").where({"_id":id}).get()
     for (let address of res[0].addressInfo) {
       if(address.id === item.id){
         address.address = item.address
         address.flag = item.flag
         address.gendar = item.gendar
         address.menpai = item.menpai
         address.name = item.name
         address.number = item.number
       }
     }
     return await db.collection("user").where({"_id":id}).update({
        "addressInfo":res[0].addressInfo
     })
  },
  //修改用户的默认地址 id为自己的id，userID为收货人的ID
  async updateUserDefaultAddress(userId,id){
    const {data:res} = await db.collection("user").where({"_id":id}).get()
    for (let address of res[0].addressInfo) {
      if(address.id === userId){
        address.flag = true
      }else{
        address.flag = false
      }
    }
    return await db.collection("user").where({"_id":id}).update({
      "addressInfo":res[0].addressInfo
    })
  },
	// 根据用户ID添加用户的收货地址
	async addAddress(id,address) {
		const {data: res} = await db.collection("user").where({"_id":id}).get()
    //如果当前选择了默认地址，则将之前的地址信息都变为不是默认地址
    if(address.flag){
      for (let s of res[0].addressInfo) {
        s.flag = false
      }
      // await db.collection("user").where({"_id":id}).update({
      //   "addressInfo":res[0].addressInfo
      // })
    }
			res[0].addressInfo.push(address)
			return await db.collection("user").where({
				"_id":id
			}).update({
				"addressInfo": res[0].addressInfo
			})
		

	},
	// 查询所有数据
	async getAddress() {
		return await db.collection("user").get()
	}

	/**
	 * method1方法描述
	 * @param {string} param1 参数1描述
	 * @returns {object} 返回值描述
	 */
	/* 
	method1(param1) {
		// 参数校验，如无参数则不需要
		if (!param1) {
			return {
				errCode: 'PARAM_IS_NULL',
				errMsg: '参数不能为空'
			}
		}
		// 业务逻辑
		
		// 返回结果
		return {
			param1 //请根据实际需要返回值
		}
	}
	*/
}